var comm = {};
    comm.clipboard = {};

//ctrol + v 事件
comm.clipboard._cellkeydown = function(event, id, gid){
    var _id = id;
    if (event.ctrlKey && event.keyCode == 86 && id) {
        var _help = document.getElementById(id);
        _help.focus();
        _help.select();
        var fncall = "comm.clipboard._dealwithData('"+_id+"','"+gid+"')";
        setTimeout(fncall,50);
    }            
    _help = fncall = event =  id = null;
}

//将粘贴事件转移到textArea中
comm.clipboard._dealwithData = function(id, gid){
    var _help = document.getElementById(id);
    _help.blur();
    var excelValues = comm.clipboard._getColumnsByClipboard($(_help).val()),
        rowIndex = comm.clipboard.curIdx,
        field = comm.clipboard.curField;
        comm.datagrid.excel2grid(gid,rowIndex,field,excelValues);
    _help = id = null;
}

//将贴过来的Excel中内容分解成数组
comm.clipboard._getColumnsByClipboard = function(context){
    var cols= [];
    if(context){
        cols = context.split('\n');
        if('' == cols[cols.length - 1]){
            cols.pop();
        }
    }
    context = null;
    return cols;
}
/**
 *设置gridid在idx行的第fieldName列为fieldValue
 *@gridid grid的Id
 *@idx 第idx行
 *@fieldName 更新的字段名称
 *@fieldValue 更新的值
 */
comm.datagrid={};
comm.datagrid.setCell = function(gridid, idx, fieldName, fieldValue){
    if(!(gridid && (idx >= 0) && fieldName)){
        return;
    }
    var _r = $('#' + gridid).datagrid('selectRow', idx);
    _r[fieldName] = fieldValue;
    $('#' + gridid).datagrid('updateRow', {index: idx, row: _r});
    _r = gridid = idx = fieldName = fieldValue = null;
}
/**
 *设置gridid在idx行的第fieldName列为fieldValue
 *@gridid grid的Id
 *@staIdx 第idx行
 *@fieldName 更新的字段名称
 *@fieldValues 更新的值
 */
comm.datagrid.setCells = function(gridid, staIdx, fieldName, fieldValues){
    if(!(gridid && (staIdx >= 0) && fieldName && fieldValues)){
        return;
    }
    var editor=$('#' + gridid).datagrid('getEditor',{index:staIdx,field:fieldName});
	if( editor==null){
	    	return;
    }
    var recs = $('#' + gridid).datagrid('getRows');
    comm.datagrid.updateAndAdd(gridid,recs, staIdx, fieldName, fieldValues);
    gridid =  staIdx = fieldName = fieldValues = null;
}



comm.datagrid.updateAndAdd = function(gridid,recs, startIdx, fieldName, fieldValues){
    if(!(fieldName && fieldValues)){
        return;
    }
    if(!recs){
        recs = [];
    }
    var rcnt = recs.length, 	//9 table的总行数
    fcnt = fieldValues.length,	//复制的数据封装的数组长度
    ucnt = fcnt > rcnt ? fcnt : parseInt(fcnt) + parseInt(startIdx);
    var index=parseInt(fcnt)+parseInt(startIdx);
    for(var i = startIdx, len = ucnt; i < len; i++){
    	var costEditor = $('#'+gridid).datagrid('getEditor',{index:i,field:fieldName});  
        if(i < rcnt){
        	 $(costEditor.target).val(fieldValues[i - startIdx]); 
        }else{
        	break;
        }
    }
    if(index<rcnt){
    	$('#'+gridid).datagrid('selectRow', index);
    }else{
    	$('#'+gridid).datagrid('selectRow', rcnt-1);
    }
}
/**
 *从Excel复制到datagrid之中
 *@gridid grid的Id
 *@staIdx 第idx行
 *@fieldName 更新的字段名称
 *@fieldValues 更新的值
 */
comm.datagrid.excel2grid = function(gridid, staIdx, fieldName, fieldValues){
    if(!(gridid && (staIdx >= 0) && fieldName && fieldValues)){
        return;
    }
    comm.datagrid.setCells(gridid, staIdx, fieldName, fieldValues);
    gridid = staIdx = fieldName = fieldValues = null;
}
/**
 *初始从Excel复制到datagrid之中功能
 *@option 初始化参数,其中gid是指grid的ID
 *@example
 *comm.datagrid.initExcel2Grid({gid:'t1'});
 */
comm.datagrid.initExcel2Grid = function(option){//inputClass
    var opt = option;
    if(!(opt && opt.gid)){
        return ;
    }
    var _clipToolId_ = '_clipToolId_' + opt.gid;
    var _clipToolDIV = '<textarea id="'+ _clipToolId_ +'" style="width:0px;height:0px"></textarea>';
    //获取剪切板的内容
    $('body').append(_clipToolDIV);
    //Ctrol + V事件必须在body上面
    $('body').keydown(function(event){
        var _id = _clipToolId_;
        comm.clipboard._cellkeydown(event, _id, opt.gid);
    });
    //添加文本框聚焦事件，用于传递行号以及列名
    $('.'+opt.inputClass).focus(function(){
		 fileName=$(this).parents("div").parent("td").attr("field");				//列名
		 trId=$(this).parents("div").parent("td").parent("tr").attr("id");			//本行的id
		 _Index=trId.lastIndexOf('-');	
		 rowIndex=trId.substring(_Index+1,trId.length);
		 comm.clipboard.curIdx = rowIndex;
	     comm.clipboard.curField = fileName;
	});
    
    //添加grid onClickCell事件，用于传递当前Grid编辑信息
//    $('#' + opt.gid).datagrid({
//    	 onClickRow:function(index, row){
//		      comm.clipboard.curIdx = index;
//		      comm.clipboard.curField = opt.field;
//  		 }
//    });
}
/**
 *销毁Excel2Grid功能
 *@option 初始化参数,其中gid是指grid的ID
 */
comm.datagrid.destoryExcel2Grid = function(option){
    var opt = option;
    if(!(opt && opt.gid)){
        return ;
    }
    var _clipToolId_ = '_clipToolId_' + opt.gid;
    $('#' + _clipToolId_).remove();
    $('body').unbind('keydown');
}

